*Eitan Hersh and Sarang Shah
*Replication Code for "The Partisan Realignment of American Business"


***PREPPING DATA FOR ANALYSIS


***
u  replication_elite_surveydata, clear
drop weight

gen preg3 = 1 if party == "DEM"
replace preg3 = -1 if party == "REP"
replace preg3 = 0 if party != "DEM" & party != "REP"
gen fem = gender == "female"
gen rac5 = 5 if race == "caucasian"
replace rac5 = 4 if race == "asian"
replace rac5 = 3 if race == "hispanic"
replace rac5 = 2 if race  == "black"
replace rac5 = 1 if race == "nativeAmerican" | race == "other" | race == "unknown"

*RESPONSE RATE TAB
tab respond return, row mis
tab return
*Total solicited: 9998
*Total return to sender: 187
*Total responses: 699
*Response rate: 699/(9998-187) = 7%
tab online

*party
merge 1:1 person_id using pid_recode_SS, nogen
replace pid = pid_rec if pid ==6 
gen pid3_self = 3 if pid == 1 | pid == 2
replace pid3_self = 2 if pid == 3 
replace pid3_self = 1 if pid == 4 | pid == 5

gen dem = 1 if pid3_se == 3
replace dem = 0 if pid3_s == 1 | pid3_s == 2
gen rep = 1 if pid3_se == 1
replace rep = 0 if pid3_s == 2 | pid3_s == 3

replace title = lower(title)
gen title_lawyer = 1 if strpos(title, "attorney") > 0 | strpos(title, "counsel") > 0
gen title_exec = 1 if strpos(title, "executive") > 0
gen title_vp = 1 if strpos(title, "vice president") > 0 | strpos(title, "vp") > 0
gen title_principal = 1 if strpos(title, "principal") > 0
gen title_shareholder = 1 if strpos(title, "shareholder" ) > 0
gen title_partner =1 if strpos(title, "partner") > 0
gen title_president  = 1 if strpos(title, "president") > 0 & title_vp != 1
gen title_founder = 1 if strpos(title, "founder") > 0
gen title_ceo = 1 if strpos(title, "ceo") > 0
gen title_csuite = 1 if strpos(title, "cfo") > 0 | strpos(title, "coo") > 0 | strpos(title, "cmo") > 0 | strpos(title, "cio") > 0 | strpos(title, "chief") > 0 | strpos(title, "cto") > 0
gen title_chair = 1 if strpos(title, "chair") > 0 
gen title_director = 1 if strpos(title, "director") > 0
gen title_manager = 1 if strpos(title, "manager") > 0
gen title_owner =1 if strpos(title, "owner" ) >0 

recode title_* (.=0) if respond == 1


egen title_other = rowtotal(title_lawyer-title_owner)
gen no_title = 1 if title_other == 0 & respond == 1
replace no_title = 0 if title_other != 0
drop title_other

tab employment [aw=weight]
gen ft_worker = 1 if employment == 1
recode ft_worker  .=0 if respond == 1
gen ftpt_consult  =1 if employment ==1 | employment ==2 | employment == 4
recode ftpt_cons  . =0 if respond == 1


tab preg3 if resp == 1 & ft_w ==1  [aw=weight]
tab fem if resp == 1  & ft_w ==1 [aw=weight]
tab rac5 if resp == 1  & ft_w ==1 [aw=weight]
sum age [aw=weight] if resp == 1  & ft_w ==1, detail 

gen age5 = 1 if age <45
replace age5 = 2 if age >=45 & age <50
replace age5 = 3 if age >=50 & age <55
replace age5 = 4 if age >=55 & age <60
replace age5 = 5 if age >=60 & age <=65


*Employee count 
merge 1:1 person_id using employees_recode_SS, nogen
destring employees, force gen(employees2)
replace employees2 = employees_recode if employees_recode != . 
replace employees2 = 2000 if employees == "2000+" & employees2 == .
drop employees
ren employees2 employees
drop employees_re

gen emply5 = 1 if employee <10
replace emply5  = 2 if employee >=10 & employee <100
replace emply5 = 3 if employee >=100 & employee <1000
replace emply5 = 4 if employee >=1000 & employee <10000
replace emply5 = 5 if employee >=10000 & employee != . 
tab emply5 if ft_worker ==1 [aw=weight]

destring role, replace
recode role 2=0
tab role if ft_ ==1 [aw=weight]
tab role if ftpt ==1 [aw=weight]

replace income = "5" if income == "4,5"
destring income, replace
tab income if ft_ == 1 [aw=weight]
tab income if ftpt == 1 [aw=weight]

tab income if ft_ == 1 & income != 6 [aw=weight] 

merge 1:1 person_id using industry_recode_SS, nogen

tab industry_recode, gen(inds_)
ren inds_1 inds_fire
ren inds_2 inds_health
ren inds_3 inds_law
ren inds_4 inds_consult
ren inds_5 inds_nonprof
ren inds_7 inds_retail
ren inds_8 inds_tec
ren inds_6 inds_oth

move inds_oth inds_tec
gen employees1000 = 1 if emply5 ==4 | emply5 == 5
recode employees1000 .=0 if emply5 !=.

tab industry_re if ft_w == 1 [aw=weight]
tab pid3_s if ft_w == 1 [aw=weight]
tab industry_re pid3_s if ft_ == 1 [aw=weight], row


merge 1:1 person_id using tenure_recode_SS, nogen
destring tenure, gen(ten2) force
replace ten2 = tenure_recode if tenure_recode != .
replace ten2 = 4 if tenure == "4 years" & ten2 == . 
replace ten2 = 36 if tenure == 	"36 years" & ten2 ==. 
drop tenure tenure_recode 
ren ten2 tenure
sum tenure if ft_w ==1 [aw=weight], detail

merge 1:1 person_id using hours_recode, nogen


label var dem "Democrat"
label var rep "Republican" 
label var employees "Large Comp."
label var inds_health "Industry: Health"
label var inds_law "Industry: Law"
label var inds_consult "Industry: Consulting"
label var inds_nonprof "Industry: Edu/Media/Arts"
label var inds_retail "Industry: Retail"
label var inds_tec "Industry:Technology"
label var inds_oth "Industry: Other"
label var employees1000 "1,000+ Employees"

**************
***TABLE 1****
**************
tab preg3 if resp != 2
tab fem if resp != 2
tab rac5 if resp != 2
sum age if resp != 2, detail

tab preg3 if resp != 2 [aw=initial]
tab fem if resp != 2 [aw=initial]
tab rac5 if resp != 2 [aw=initial]
sum age if resp != 2 [aw=initial], detail

tab preg3 if resp == 1
tab fem if resp == 1 
tab rac5 if resp == 1 
sum age if resp == 1, detail 

tab preg3 if resp == 1  [aw=weight]
tab fem if resp == 1 [aw=weight]
tab rac5 if resp == 1 [aw=weight]
sum age [aw=weight] if resp == 1, detail 

tab preg3 if resp == 1 & ft_w ==1  [aw=weight]
tab fem if resp == 1  & ft_w ==1 [aw=weight]
tab rac5 if resp == 1  & ft_w ==1 [aw=weight]
sum age [aw=weight] if resp == 1  & ft_w ==1, detail 



**************
***TABLE 2****
**************
sum title_* no_titl if ft_worker ==1 [aw=weight]
tab industry_re if ft_w == 1 [aw=weight]


**********

gen us_allign = us_corp_all
recode us_allign 1=1 2=-1 3=0 4=. 
gen state_allign = state_corp_allign
recode state_allign  1=1 2=-1 3=0 4=. 

gen company_changing = 1 if corp_party_change_1 == 1
replace company_changing = 0 if corp_party_change_1 == 3
replace company_changing = -1 if corp_party_change_1 == 2

gen ceo_changing = 1 if corp_party_change_2 == 1
replace ceo_changing = 0 if corp_party_change_2 == 3
replace ceo_changing = -1 if corp_party_change_2 == 2

gen exec_changing = 1 if corp_party_change_3 == 1
replace exec_changing = 0 if corp_party_change_3 == 3
replace exec_changing = -1 if corp_party_change_3 == 2

gen emp_changing = 1 if corp_party_change_4 == 1
replace emp_changing = 0 if corp_party_change_4 == 3
replace emp_changing = -1 if corp_party_change_4 == 2

gen cus_changing = 1 if corp_party_change_6 == 1
replace cus_changing = 0 if corp_party_change_6 == 3
replace cus_changing = -1 if corp_party_change_6 == 2

gen board_changing = 1 if corp_party_change_7 == 1
replace board_changing = 0 if corp_party_change_7 == 3
replace board_changing = -1 if corp_party_change_7 == 2

*****
**Statistics for FIGURE 1, saved into masselete2 tab in partisan_paper_stats. See below for code to make graph.
ci mean us_allign state_allign company_changing if ft_w == 1 [aw=weight]
bysort pid3_s: ci mean us_allign state_allign company_changing if ft_w == 1 [aw=weight]



gen cp = corp_party_1
recode cp 1 =3 2=1 3=2 4=4 5 =. 
gen cp_scale = cp
recode cp_scale 1=-1 2=0 3=1 4=.
gen priority_scale = corp_party_policy
recode priority_scale 5=-1 6=0 4=1 7 =. 
merge 1:1 person_id using policy_priority_recode, nogen
gen corp_ceo_lean = corp_party_2
gen corp_exec_lean = corp_party_3
gen corp_employee_lean = corp_party_4
gen corp_suppliers_lean = corp_party_5
gen corp_customers_lean = corp_party_6
gen corp_board_lean = corp_party_7


recode corp_ceo_lean-corp_board_lean (1=1) (2=-1) (3=0) (4=2) (5 =.)
recode corp_ceo_lean-corp_board_lean (2 =.) 

*****
**Statistics for FIGURE 2, saved into stakeholder2 tab in partisan_paper_stats. See below for code to make graph.
ci mean cp_scale corp_ceo_lean corp_exec_lean corp_employee_lean corp_customers_lean corp_board_lean  if ft_w == 1 [aw=weight]
ci mean cp_scale corp_ceo_lean corp_exec_lean corp_employee_lean corp_customers_lean corp_board_lean  if ft_w == 1 & pid3_ == 1 [aw=weight]
ci mean cp_scale corp_ceo_lean corp_exec_lean corp_employee_lean corp_customers_lean corp_board_lean  if ft_w == 1 & pid3_ == 2 [aw=weight]
ci mean cp_scale corp_ceo_lean corp_exec_lean corp_employee_lean corp_customers_lean corp_board_lean  if ft_w == 1 & pid3_ == 3 [aw=weight]
******

**************
***TABLE 3****
**************
tab corp_employ corp_ceo if ft_w ==1 [aw=weight], summarize(cp_scale) means



egen count_dem = anycount(corp_ceo_lean corp_exec_lean corp_employee_lean corp_customers_lean corp_board_lean),  values(1)
egen count_rep = anycount(corp_ceo_lean corp_exec_lean corp_employee_lean corp_customers_lean corp_board_lean),  values(-1)

*****
**Statistics for FIGURE 3, saved into xpressure2 tab in partisan_paper_stats. See below for code to make graph.
bysort count_dem: ci means cp_scale if ft_w ==1 [aw=weight]
bysort count_rep: ci means cp_scale if ft_w ==1 [aw=weight]
******

**************
***TABLE 4****
**************
tab cp_scale priority_scale if ft_w == 1 [aw=weight], row col
**



*****
**Statistics for FIGURE 4, saved into partychange tab in partisan_paper_stats. See below for code to make graph.
ci mean company_changi-board_chang if ft_w == 1 [aw=weight]
ci mean company_changi-board_chang if ft_w == 1 & pid3_ == 1 [aw=weight]
ci mean company_changi-board_chang if ft_w == 1 & pid3_ == 2 [aw=weight]
ci mean company_changi-board_chang if ft_w == 1 & pid3_ == 3 [aw=weight]


**************
***TABLE 5****
**************
reg cp_scale dem rep employees1000 inds_heal-inds_oth if ft_w ==1 [aw=weight]
reg company_chang dem rep employees1000 inds_heal-inds_oth if ft_w ==1 [aw=weight]
**************



gen ceo_push = corp_stakeholders_1
gen exec_push = corp_stakeholders_2
gen emp_push = corp_stakeholders_3
gen supp_push = corp_stakeholders_4
gen cus_push = corp_stakeholders_5
gen board_bush = corp_stakeholders_6
gen you_push  = corp_stakeholders_7

recode ceo_push-you_push (1=1) (2=-1) (3=0) (nonmis =.) 
*****
**Statistics for FIGURE 5, saved into push tab in partisan_paper_stats. See below for code to make graph.
ci mean ceo_push-you_push if ft_w ==1  [aw=weight]
ci mean ceo_push-you_push if ft_w ==1 & pid3_ == 1  [aw=weight]
ci mean ceo_push-you_push if ft_w ==1 & pid3_ == 2  [aw=weight]
ci mean ceo_push-you_push if ft_w ==1 & pid3_ == 3  [aw=weight]


**************
***TABLE SI2****
**************
tab corp_party_1 if ft_w == 1 [aw=weight]
tab corp_party_2 if ft_w == 1 [aw=weight]
tab corp_party_3 if ft_w == 1 [aw=weight]
tab corp_party_4 if ft_w == 1 [aw=weight]
tab corp_party_5 if ft_w == 1 [aw=weight]
tab corp_party_6 if ft_w == 1 [aw=weight]
tab corp_party_7 if ft_w == 1 [aw=weight]

**************
***TABLE SI3****
**************
reg priority_scale cp_scale if ft_ == 1 [aw=weight]
reg priority_scale cp_scale dem rep if ft_ == 1 [aw=weight]


**************
***TABLE SI4****
**************
tab corp_party_change_1 if ft_w == 1 [aw=weight]
tab corp_party_change_2 if ft_w == 1 [aw=weight]
tab corp_party_change_3 if ft_w == 1 [aw=weight]
tab corp_party_change_4 if ft_w == 1 [aw=weight]
tab corp_party_change_5 if ft_w == 1 [aw=weight]
tab corp_party_change_6 if ft_w == 1 [aw=weight]
tab corp_party_change_7 if ft_w == 1 [aw=weight]

**************
***TABLE SI5****
**************
tab corp_stakeholders_1 if ft_w == 1 [aw=weight]
tab corp_stakeholders_2 if ft_w == 1 [aw=weight]
tab corp_stakeholders_3 if ft_w == 1 [aw=weight]
tab corp_stakeholders_4 if ft_w == 1 [aw=weight]
tab corp_stakeholders_5 if ft_w == 1 [aw=weight]
tab corp_stakeholders_6 if ft_w == 1 [aw=weight]
tab corp_stakeholders_7 if ft_w == 1 [aw=weight]


**************
***TABLE SI1****
**************
u all_census_zips, clear
merge 1:1 zip using  fortune500_zip, gen(fortune)
merge 1:1 zip using sample_zips, gen(samplezips)
tab fortune sample if fortune != 2 & sample != 2

***************
*MASS PUBLIC SURVEY


import spss using CCES22_TUF_OUTPUT.sav, clear

ren teamweight weight
gen forprofit = 1 if TUF301a == 1
replace forprofit = 0 if TUF301a > 1 & TUF301a != . 



gen partychange_overall = TUF313
recode partychange_overall 1=1 2=-1 3=0 4 5 =. 

gen state_allign = TUF340
recode state_allign 1=1 2=-1 3=0 4=. 

gen us_allign = TUF341
recode us_allign 1=1 2=-1 3=0 4=. 

gen dem = 1 if pid7 <=3
gen rep = 1 if pid7 >=5 & pid7 <=7
gen ind = 1 if pid7 == 4
recode dem rep ind (.=0)

*****
**Statistics for FIGURE 1, saved into masselete2 tab in partisan_paper_stats. See below for code to make graph.
ci mean us_all state_all  [aw=weight]
ci mean us_all state_all  if dem == 1 [aw=weight]
ci mean us_all state_all  if rep == 1 [aw=weight]
ci mean us_all state_all  if ind == 1 [aw=weight]

ci mean  partychange_ov if forpro == 1 [aw=weight]
ci mean  partychange_ov if dem == 1 & forpro == 1 [aw=weight]
ci mean  partychange_ov if rep == 1 & forpro == 1 [aw=weight]
ci mean  partychange_ov if ind == 1 & forpro == 1 [aw=weight]

**Statistics for FIGURE SI1, saved into pid7 tab in partisan_paper_stats. See below for code to make graph.
 tab pid7 us_all [aw=weight] if pid7 <=7, row
 
 
 ****FIGURE CONSTRUCTION
 
 
 **********
 *FIGURE 1*
 **********
 

import excel partisan_paper_stats.xlsx, sheet("masselete2") clear first


twoway (rspike lb ub order if me == "elite" & group == "overall", lc(black) lw(thick) horizontal) ///
   (rspike lb ub order if me == "elite" & group == "dem", lc(blue) horizontal) ///
      (rspike lb ub order if me == "elite" & group == "ind", lc(purple) horizontal) ///
	     (rspike lb ub order if me == "elite" & group == "rep", lc(red) horizontal) ///
 (scatter order mean if me == "elite" & group == "overall", mc(bblack) msize(medium) ms(diamond)) ///
 (scatter order mean if me =="elite" & group == "dem", mc(blue) msize(small) ms(square)) ///
  (scatter order mean if me == "elite" & group == "ind", mc(purple) msize(small) ms(diamond)) ///
 (scatter order mean if me =="elite" & group == "rep", mc(red) msize(small) ms(square)) ///
 , ///
 text(3 -.5 "Nat'l Businesses" 2 -.5 "State Businesses" 1 -.5 "Own Business") legend(off) ylabel(none)  ///
 ytitle("") xtitle(More Republican         About the Same              More Democratic)  plotregion(style(none)) yscale(noextend) xscale(noextend) xlabel(-.75(.25).75) ///
 legend(on order(5 "All" 6 "Dems." 7 "Inds." 8 "Reps.") size(medsmall) rows(1) region(lcolor(none))) ///
 subtitle("SAMPLE OF BUSINESS LEADERS") xline(0, lc(gs8) lp(dash)) ///
scale(.8) xsize(8) ysize(6) saving(me1.gph, replace)


twoway (rspike lb ub order if me == "mass" & group == "overall", lc(black) lw(thick) horizontal) ///
   (rspike lb ub order if me == "mass" & group == "dem", lc(blue) horizontal) ///
      (rspike lb ub order if me == "mass" & group == "ind", lc(purple) horizontal) ///
	     (rspike lb ub order if me == "mass" & group == "rep", lc(red) horizontal) ///
 (scatter order mean if me == "mass" & group == "overall", mc(bblack) msize(medium) ms(diamond)) ///
 (scatter order mean if me =="mass" & group == "dem", mc(blue) msize(small) ms(square)) ///
  (scatter order mean if me == "mass" & group == "ind", mc(purple) msize(small) ms(diamond)) ///
 (scatter order mean if me =="mass" & group == "rep", mc(red) msize(small) ms(square)) ///
 , ///
 text(3 -.5 "Nat'l Businesses" 2 -.5 "State Businesses" 1 -.5 "Own Business") legend(off) ylabel(none) ///
 ytitle("") xtitle(More Republican              About the Same              More Democratic)  plotregion(style(none)) yscale(noextend) xscale(noextend) xlabel(-.75(.25).75) ///
 legend(on order(5 "All" 6 "Dems." 7 "Inds." 8 "Reps.") size(medsmall) rows(1) region(lcolor(none))) ///
 subtitle("SAMPLE OF MASS PUBLIC") xline(0, lc(gs8) lp(dash)) ///
scale(.8) xsize(8) ysize(6) saving(me2.gph, replace)

graph combine me2.gph  me1.gph , row(1) title("In last decade, have businesses become...?", size(medium)) iscale(.75) 

 
 **********
 *FIGURE 2*
 **********
 

 import excel partisan_paper_stats.xlsx, sheet("stakeholder2") clear first
twoway (rspike lb ub order if party == "All", lc(black) lw(thick) horizontal) ///
   (rspike lb ub order if party == "Independent", lc(purple) horizontal) ///
      (rspike lb ub order if party == "Democrat", lc(blue) horizontal) ///
	     (rspike lb ub order if party == "Republican", lc(red) horizontal) ///
 (scatter order mean if party == "All", mc(bblack) msize(medium) ms(diamond)) ///
 (scatter order mean if party == "Democrat", mc(blue) msize(small) ms(circle)) ///
 (scatter order mean if party == "Independent", mc(purple) msize(small) ms(square)) ///
 (scatter order mean if party == "Republican", mc(red) msize(small) ms(triangle)) ///
 , ///
 legend(off) ylabel(2 "Customers" 3 "Board" 4 "Other Execs." 5 "CEO" 6 "Employees" 7 "The Company", angle(0)) ///
 ytitle("") xtitle(Leans Republican              Leans Neither              Leans Democratic) plotregion(style(none)) yscale(noextend) xscale(noextend) xlabel(-.75(.25).75) ///
 legend(on order(5 "All" 6 "Dems." 7 "Inds." 8 "Reps.") size(small) rows(1) region(lcolor(none))) ///
 subtitle("Perception of Stakeholder Partisan Allignment") xline(0, lc(gs8) lp(dash)) ///
scale(.8) xsize(8) ysize(6)

 **********
 *FIGURE 3*
 **********

import excel partisan_paper_stats.xlsx, sheet("xpressure2") clear first
 
twoway(connected d Agreement, lc(blue) mc(blue) lw(thick) msymbol(circle) msize(large)) ///
 (connected r Agreement, lc(red) mc(red) msymbol(triangle) lw(thick) msize(large)) ///
   (rspike dlb dub Agreement, lc(blue%80) lw(thick)) ///
     (rspike rlb rub Agreement, lc(red)) ///
 , plotregion(style(none)) scheme(s1color) xscale(noextend) xtitle(Number of Stakeholders Aligned with Party) legend(on order(1 "Democrats" 2 "Republicans") size(small) rows(1) region(lcolor(none))) yline(0, lc(gs8) lp(dash)) ///
 ytitle(Company's Overall Alignment) ylabel(-.75 "Leans Rep." 0 "Leans Neither" .75 "Leans Dem.", angle(90) labsize(medsmall) )

 

**********
 *FIGURE 4*
 **********
 import excel partisan_paper_stats.xlsx, sheet("partychange") clear first
twoway (rspike lb ub order if party == "All", lc(black) lw(thick) horizontal) ///
   (rspike lb ub order if party == "Independent", lc(purple) horizontal) ///
      (rspike lb ub order if party == "Democrat", lc(blue) horizontal) ///
	     (rspike lb ub order if party == "Republican", lc(red) horizontal) ///
 (scatter order mean if party == "All", mc(bblack) msize(medium) ms(diamond)) ///
   (scatter order mean if party == "Democrat", mc(blue) msize(small) ms(circle)) ///
 (scatter order mean if party == "Independent", mc(purple) msize(small) ms(square)) ///
 (scatter order mean if party == "Republican", mc(red) msize(small) ms(triangle)) ///
 , ///
 legend(off) ylabel(2 "Customers" 3 "Board" 4 "Other Execs." 5 "CEO" 6 "Employees" 7 "The Company", angle(0)) ///
 ytitle("") xtitle(More Republican              About the Same              More Democratic) plotregion(style(none)) yscale(noextend) xscale(noextend) xlabel(-.75(.25).75) ///
 legend(on order(5 "All" 6 "Dems." 7 "Inds." 8 "Reps.") size(small) rows(1) region(lcolor(none))) ///
 subtitle("In last decade, have stakeholders become...?") xline(0, lc(gs8) lp(dash)) ///
scale(.8) xsize(8) ysize(6)



**********
 *FIGURE 5*
 **********

 import excel partisan_paper_stats.xlsx, sheet("push") clear first
twoway (rspike lb ub order if party == "All", lc(black) lw(thick) horizontal) ///
   (rspike lb ub order if party == "Independent", lc(purple) horizontal) ///
      (rspike lb ub order if party == "Democrat", lc(blue) horizontal) ///
	     (rspike lb ub order if party == "Republican", lc(red) horizontal) ///
 (scatter order mean if party == "All", mc(bblack) msize(medium) ms(diamond)) ///
 (scatter order mean if party == "Democrat", mc(blue) msize(small) ms(circle)) ///
 (scatter order mean if party == "Independent", mc(purple) msize(small) ms(square)) ///
 (scatter order mean if party == "Republican", mc(red) msize(small) ms(triangle)) ///
 , ///
 legend(off) ylabel(2 "Yourself"  3 "Customers" 4 "Board" 5 "Other Execs." 6 "CEO" 7 "Employees", angle(0)) ///
 ytitle("") xtitle(More Aligned Republican              Neither              More Aligned Democratic) plotregion(style(none)) yscale(noextend) xscale(noextend) xlabel(-.5(.25).5) ///
 legend(on order(5 "All" 6 "Dems." 7 "Inds." 8 "Reps.") size(small) rows(1) region(lcolor(none))) ///
 subtitle("Are stakeholders pushing the company to be...?") xline(0, lc(gs8) lp(dash)) ///
scale(.8) xsize(8) ysize(6)




 ************
 **FIGURE SI1**
 *************
 import excel partisan_paper_stats.xlsx, sheet("pid7") clear first

label var morerep "More Republican"
label var same "About the Same"
label var moredem "More Democratic"

graph hbar (asis) morerep same moredem, over(pid, sort(pido) label(labcolor(black) labsize(small) labgap(2))) stack  ///
bar(1, fcolor(red) lcolor(none)) bar(2, fcolor(gs8) lcolor(none)) bar(3, fcolor(blue) lcolor(none)) ///
 ytitle("How have companies changed?")  ///
 ylabel(0(10)100) legend(nostack rows(1) size(small) nobox region(lpattern(blank))) ///
 xsize(9) ysize(8) yline(50)  plotregion(style(none))  yscale(noextend) title(Major US Corporations) blabel(bar, format(%9.0f) position(center) color(white) size(medium) ) scale(.8)

